The speed at which computer systems operate is a critical factor in determining the suitability of such systems to perform mission critical tasks. In typical enterprise-wide computer systems where multiple computers communicate by way of a network (such as a WAN or the Internet), one factor that greatly impacts the speed and overall performance of the system is the amount of information that needs to be transmitted across the network. Since repeatedly fetching data across a network or re-computing data can be expensive, computer systems utilize various caching techniques to re-use information as much as possible. Such techniques can help reduce bandwidth and processing requirements of the computer systems, as well as help improve responsiveness for end users.
Cache memory in computer systems is a type of fast-access memory that is typically used to temporarily store certain type of information for rapid access. Such information typically comprises data that is any of frequently requested, slow to access, and permanently stored in slower-access memory, such as a magnetic disk or other direct access storage device (DASD). In a typical network session where a user or application is interacting with a server through a client computer over a network, the client will first check its local cache memory for the desired data before requesting it to be retrieved from the server. If the data is stored in cache, the client computer can access the information locally a lot faster than retrieving it from the server.
A shortcoming of such traditional caching techniques is the difficulty to manage copies of data in an environment where the data stored on the server changes frequently. Consider the example of a software development company where teams of onshore/offshore developers and quality assurance engineers may be simultaneously updating and accessing the same data on application development servers located in geographically disparate locations. In such situations, the cache memory for the clients and/or development servers may have to be refreshed periodically in order to ensure that the cached data reflects the latest set of changes made on the application development servers. Current caching techniques allow pre-setting of the cache expiration period based upon several factors, such as, business requirements, type of data being cached and the nature of the underlying computer system. However, this does not solve the problem of slow server response times due to frequent cache memory refreshment.
Another technique for improving network performance is to place more caches in the network thereby alleviating server load. However, this technique results in a more complex network configuration and higher costs. Furthermore, existing approaches, including placing more caches in the network, do not provide ways to efficiently maintain linkages between the various types of data in computer systems where content may be generated both statically and dynamically and certain data may contain references to other data. Optimizing caching by placing more caches in the network in such computer systems is especially difficult because copies of referenced data may be placed in different locations on the network and the references to such data need to be dynamically updated in order to redirect the client to the proper location.
Accordingly, there remains a need for techniques for improving the performance and accuracy of a computer system where the data is any of interlinked, dynamically generated and frequently updated.